<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
use think\Db;

class Role extends AdminController
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        // 查询状态为1的用户数据 并且每页显示10条数据
        $data = Db::name('role')->paginate(5);
        // 把分页数据赋值给模板变量list
        $this->assign('data', $data);
        // 渲染模板输出
        return $this->fetch();
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        return view('role/add');
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //接收数据
        $info = $request->post();
        //var_dump($info);die;
        //数据过滤
        $data = [
            "rolename"=>$info['rolename'],
            "status"=>$info['status'],
            "remark"=>$info['remark']
        ];
        //保存
        $result = Db::name('role')->insert($data);
        //重定向页面
        if($result){
            return $this->success('添加成功',url('admin/Role/index'));
        }else{
            return $this->error('添加失败');
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        $data = Db::name('role')->where('id',$id)->find();
        $this->assign('data',$data);
        return view('role/edit');
    }
    /**
     * 显示权限分配表单页面.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function getNode($id)
    {
        $data = Db::name('node')->select();

        //查询该角色已分配节点id
        $node_ids = Db::name('role_node')->where('role_id',$id)->field('node_id')->select();

        $nid = array();
        foreach($node_ids as $val){
            $nid[] = $val['node_id'];
        }
        //dump($nid);die;
        $this->assign('nid',$nid);
        $this->assign('data',$data);
        $this->assign('role_id',$id);
        return view('role/node');
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function setnode(Request $request, $id)
    {

        $info = $request->post();
        $node_id = $info['node_id'];
        $role_id = $info['id'];

        //清空原来数据
        Db::name('role_node')->where('role_id',$role_id)->delete();

        //插入数据
        foreach($node_id as $val){
            $result3 = Db::name('role_node')->insert(['node_id'=>$val,'role_id'=>$role_id]);
        }

        //重定向
        if($result3){
            return $this->success('配置成功',url('admin/Role/index'));
        }else{
            return $this->error('配置失败');
        }
    }
    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        $info = $request->put();
        $data = [
            "rolename"=>$info['rolename'],
            "status"=>$info['status'],
            "remark"=>$info['remark']
        ];
        $result = Db::name('role')->where('id',$id)->update($data);
        if($result){
            return $this->success('修改成功',url('admin/role/index'));
        }else{
            return $this->error('修改失败');
        }
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        Db::name('role_node')->where('role_id',$id)->delete();
        $result = Db::name('role')->delete($id);

        //判断数据删除是否成功
        if ($result) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为:' . $id . '的用户删除成功';
        } else {
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = 'ID为:' . $id . '的用户删除失败,请重试!';
        }
        return json($info);
    }
}
